import { isLink } from '@/utils/validate'

/**
 * url 格式化
 * @param url   // -> /
 */
export function urlFormat (url: string) {
  return url.replace(/(?<!:)\/+/g, '/')
}

export function rpx (value: string | number) {
  if (Number.isNaN(Number(value))) return value
  return `${value}rpx`
}

/**
 * 静态文件地址格式化修正
 * @param url
 */
export function cdn (url: any) {
  if (!url || typeof url !== 'string') return ''

  if (isLink(url)) return url

  return urlFormat(`${import.meta.env.VITE_APP_BASE_CDN}/${url}`)
}

/**
 * 字符加 ***
 * @param value
 */
export function starStr (value: string | number | undefined | null) {
  if (value === undefined || value === null) return ''

  const str = String(value)
  // 身份证
  if (str.length === 18) return `${str.substring(0, 6)}********${str.substring(str.length - 4)}`

  const start = Math.ceil(str.length / (str.length > 12 ? 4 : 3))
  let end = str.length - start
  if (end < start) end = -1
  else if (end === str.length - 1) end = str.length - 2

  return Array.from(str).map((char, index) => {
    if (index < start || index > end) return char
    return '*'
  }).join('')
}

/**
 * 获取首张图片
 * @param value
 */
export function getFirstImage (value: string | undefined | null) {
  const image = String(value || '').split(',')[0]
  return cdn(image)
}

/**
 * 设置文本
 */
export function displayedText (text: string, maxLength: number) {
  if (typeof text !== 'string') return ''
  if (maxLength <= 0) return text
  return text.length > maxLength ? `${text.slice(0, maxLength)}...` : text
}

/**
 * 处理数据
 * @param code 标签码
 * @param number 
 */
export function maskCode (code: string, number: number) {
  // 如果传入的code为空，则返回空字符串
  if (!code) return ''
  // 如果传入的number为4，则返回code的前4个字符
  const num = number < 20 ? number : number - 5
  return number < 20 ? code : code.slice(0, num) + '***' + code.slice(-num)
}
